package com.ly.heart.domain;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ly.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 资产卡片对象 erp_assets_info
 *
 * @author cxl
 * @date 2024-09-03
 */
@TableName ("erp_assets_info")
@ApiModel (value = "资产卡片", description = "资产卡片")
@Data
@Accessors(chain = true)
public class AssetsEntity {

    /** 主键id */
    @TableId (type = IdType.INPUT)
    private String id;

    /** 单据编号 */
    @ApiModelProperty ("单据编号")
    @TableField ("doc_code")
    @Excel (name = "单据编号")
    private String docCode;

    /** 资产组织 */
    @ApiModelProperty ("资产组织")
    @TableField ("assets_org")
    @Excel (name = "资产组织")
    private String assetsOrg;

    /** 货主组织 */
    @ApiModelProperty ("货主组织")
    @TableField ("cargo_owner_org")
    @Excel (name = "货主组织")
    private String cargoOwnerOrg;

    /** 资产类型id */
    @ApiModelProperty ("资产类型id")
    @TableField ("assets_type_id")
    @Excel (name = "资产类型id")
    private String assetsTypeId;

    /** 资产类型编码 */
    @ApiModelProperty ("资产类型编码")
    @TableField ("assets_type_code")
    @Excel (name = "资产类型编码")
    private String assetsTypeCode;

    /** 卡片编码 */
    @ApiModelProperty ("卡片编码")
    @TableField ("card_code")
    @Excel (name = "卡片编码")
    private String cardCode;

    /** 资产名称 */
    @ApiModelProperty ("资产名称")
    @TableField ("assets_name")
    @Excel (name = "资产名称")
    private String assetsName;

    /** 计量单位 */
    @ApiModelProperty ("计量单位")
    @TableField ("metering_unit")
    @Excel (name = "计量单位")
    private String meteringUnit;

    /** 资产数量 */
    @ApiModelProperty ("资产数量")
    @TableField ("assets_num")
    @Excel (name = "资产数量")
    private String assetsNum;

    /** 资产状态 */
    @ApiModelProperty ("资产状态")
    @TableField ("assets_status")
    @Excel (name = "资产状态")
    private String assetsStatus;

    /** 变动方式 */
    @ApiModelProperty ("变动方式")
    @TableField ("change_method")
    @Excel (name = "变动方式")
    private String changeMethod;

    /** 开始使用日期 */
    @ApiModelProperty ("开始使用日期")
    @TableField ("use_start_time")
    @JsonFormat (pattern = "yyyy-MM-dd")
    @Excel (name = "开始使用日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date useStartTime;

    /** 资产性质 */
    @ApiModelProperty ("资产性质")
    @TableField ("assets_nature")
    @Excel (name = "资产性质")
    private String assetsNature;

    /** 卡片来源 */
    @ApiModelProperty ("卡片来源")
    @TableField ("card_source")
    @Excel (name = "卡片来源")
    private String cardSource;

    /** 会计政策 */
    @ApiModelProperty ("会计政策")
    @TableField ("accounting_policy")
    @Excel (name = "会计政策")
    private String accountingPolicy;

    /** 入账日期 */
    @ApiModelProperty ("入账日期")
    @TableField ("posting_time")
    @JsonFormat (pattern = "yyyy-MM-dd")
    @Excel (name = "入账日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date postingTime;

    /** 未税成本 */
    @ApiModelProperty ("未税成本")
    @TableField ("untaxed_cost")
    @Excel (name = "未税成本")
    private String untaxedCost;

    /** 进项税额 */
    @ApiModelProperty ("进项税额")
    @TableField ("income_tax_amount")
    @Excel (name = "进项税额")
    private String incomeTaxAmount;

    /** 费用金额 */
    @ApiModelProperty ("费用金额")
    @TableField ("cost_amount")
    @Excel (name = "费用金额")
    private String costAmount;

    /** 费用税额 */
    @ApiModelProperty ("费用税额")
    @TableField ("cost_tax_amount")
    @Excel (name = "费用税额")
    private String costTaxAmount;

    /** 资产原值 */
    @ApiModelProperty ("资产原值")
    @TableField ("assets_cost")
    @Excel (name = "资产原值")
    private String assetsCost;

    /** 累计折旧 */
    @ApiModelProperty ("累计折旧")
    @TableField ("total_discount")
    @Excel (name = "累计折旧")
    private String totalDiscount;

    /** 资产净值 */
    @ApiModelProperty ("资产净值")
    @TableField ("assets_net_cost")
    @Excel (name = "资产净值")
    private String assetsNetCost;

    /** 累计减值准备 */
    @ApiModelProperty ("累计减值准备")
    @TableField ("total_impairment_ready")
    @Excel (name = "累计减值准备")
    private String totalImpairmentReady;

    /** 账面价值 */
    @ApiModelProperty ("账面价值")
    @TableField ("book_value")
    @Excel (name = "账面价值")
    private String bookValue;

    /** 预计残值 */
    @ApiModelProperty ("预计残值")
    @TableField ("expected_residual_value")
    @Excel (name = "预计残值")
    private String expectedResidualValue;

    /** 折旧方法 */
    @ApiModelProperty ("折旧方法")
    @TableField ("discount_method")
    @Excel (name = "折旧方法")
    private String discountMethod;

    /** 按变动进行折旧 */
    @ApiModelProperty ("按变动进行折旧")
    @TableField ("is_change_discount")
    @Excel (name = "按变动进行折旧")
    private Boolean isChangeDiscount;

    /** 预计使用期间 */
    @ApiModelProperty ("预计使用期间")
    @TableField ("expected_use_period")
    @Excel (name = "预计使用期间")
    private String expectedUsePeriod;

    /** 预计使用期间数 */
    @ApiModelProperty ("预计使用期间数")
    @TableField ("expected_use_period_num")
    @Excel (name = "预计使用期间数")
    private String expectedUsePeriodNum;

    /** 累计折旧期间数 */
    @ApiModelProperty ("累计折旧期间数")
    @TableField ("total_discount_period_num")
    @Excel (name = "累计折旧期间数")
    private String totalDiscountPeriodNum;

    /** 币别 */
    @ApiModelProperty ("币别")
    @TableField ("currency")
    @Excel (name = "币别")
    private String currency;

    /** 购进原值 */
    @ApiModelProperty ("购进原值")
    @TableField ("buy_value")
    @Excel (name = "购进原值")
    private String buyValue;

    /** 购进累计折旧 */
    @ApiModelProperty ("购进累计折旧")
    @TableField ("buy_total_discount")
    @Excel (name = "购进累计折旧")
    private String buyTotalDiscount;

    /** 折旧年期 */
    @ApiModelProperty ("折旧年期")
    @TableField ("discount_year")
    @Excel (name = "折旧年期")
    private String discountYear;

    /** 折旧金额 */
    @ApiModelProperty ("折旧金额")
    @TableField ("discount_amount")
    @Excel (name = "折旧金额")
    private String discountAmount;

    /** 本年累计折旧 */
    @ApiModelProperty ("本年累计折旧")
    @TableField ("year_total_discount")
    @Excel (name = "本年累计折旧")
    private String yearTotalDiscount;

    /** 未计提折旧额 */
    @ApiModelProperty ("未计提折旧额")
    @TableField ("unrecognized_discount_amount")
    @Excel (name = "未计提折旧额")
    private String unrecognizedDiscountAmount;

    /** 车牌号 */
    @ApiModelProperty ("车牌号")
    @TableField ("car_num")
    @Excel (name = "车牌号")
    private String carNum;

    /** 资产唯一识别码 */
    @ApiModelProperty ("资产唯一识别码")
    @TableField ("unique_identify_code")
    @Excel (name = "资产唯一识别码")
    private String uniqueIdentifyCode;

    /** 是否可用 */
    @ApiModelProperty ("是否可用")
    @TableField ("is_used")
    @Excel (name = "是否可用")
    @TableLogic
    private Integer isUsed;

    /** 流程实例ID */
    @ApiModelProperty ("流程实例ID")
    @TableField ("instance_id")
    @Excel (name = "流程实例ID")
    private String instanceId;

    /** 状态 */
    @ApiModelProperty ("状态")
    @TableField ("state")
    @Excel (name = "状态")
    private String state;

    /** 备注 */
    @ApiModelProperty ("备注")
    @TableField ("remark")
    @Excel (name = "备注")
    private String remark;

    /** 创建人 */
    @ApiModelProperty ("创建人")
    @TableField ("create_by")
    @Excel (name = "创建人")
    private String createBy;

    /** 创建时间 */
    @ApiModelProperty ("创建时间")
    @TableField ("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel (name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createTime;

    /** 修改人 */
    @ApiModelProperty ("修改人")
    @TableField ("update_by")
    @Excel (name = "修改人")
    private String updateBy;

    /** 修改时间 */
    @ApiModelProperty ("修改时间")
    @TableField ("update_time")
    @JsonFormat (pattern = "yyyy-MM-dd")
    @Excel (name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updateTime;

    /** 创建部门 */
    @ApiModelProperty ("创建部门")
    @TableField ("create_dept")
    @Excel (name = "创建部门")
    private String createDept;

    /** 修改部门 */
    @ApiModelProperty ("修改部门")
    @TableField ("update_dept")
    @Excel (name = "修改部门")
    private String updateDept;

    /** 变更人 */
    @ApiModelProperty ("变更人")
    @TableField ("change_by")
    @Excel (name = "变更人")
    private String changeBy;

    /** 变更部门 */
    @ApiModelProperty ("变更部门")
    @TableField ("change_dept")
    @Excel (name = "变更部门")
    private String changeDept;

    /** 作废人 */
    @ApiModelProperty ("作废人")
    @TableField ("invalid_by")
    @Excel (name = "作废人")
    private String invalidBy;

    /** 作废部门 */
    @ApiModelProperty ("作废部门")
    @TableField ("invalid_dept")
    @Excel (name = "作废部门")
    private String invalidDept;
    
    @ApiModelProperty ("实物信息")
    @TableField(exist = false)
    private List<AssetsPhysicalEntity> physicalList;

    @ApiModelProperty ("分配信息")
    @TableField(exist = false)
    private List<AssetsDistributionEntity> distributionList;

    @ApiModelProperty("业务type")
    @TableField (exist = false)
    private String businessType;

    @ApiModelProperty("流程模型id")
    @TableField (exist = false)
    private String modelId;



}
